home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).zip / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).adf / tracker.library / Demos / Libs.asm < prev    next >
Assembly Source File  |  1994-01-09  |  4KB  |  183 lines

  1. ;TestProgramm für "tracker.library"
  2.  
  3. ; Testet TRK_OpenLibrary, TRK_OpenStdLibrary und TRK_CloseLibrary
  4.  
  5.     NOLIST
  6.     INCLUDE "exec/LVO.i"
  7.     INCLUDE "dos/LVO.i"
  8.     INCLUDE "dos/dosextens.i"
  9.     INCLUDE "tracker.i"
  10.     LIST
  11.  
  12. _TrackerBase:    EQUR a5
  13. _DosBase:    EQUR a4
  14. Output:     EQUR d7
  15.  
  16. ; WB-Message ?
  17.     sub.l    a1,a1        ;a1=0->eigener Task
  18.     CALLEXEC FindTask    ;Wo darf man denn nachschauen ?
  19.     move.l    d0,a0
  20.     tst.l    pr_CLI(a0)      ;von CLI oder WB aus gestartet ?
  21.     bne    fromCLI
  22. ;von WB aus:
  23.     lea    pr_MsgPort(a0),a0
  24.     move.l    a0,-(sp)
  25.     CALLEXEC WaitPort    ;auf Start-Message warten
  26.     move.l    (sp)+,a0
  27.     CALLEXEC GetMsg ;muß nachher beantwortet werden
  28.     move.l    d0,WBenchMsg
  29.  
  30. fromCLI:
  31. ; Tracker-Library öffnen
  32.     OPENLIB TrName
  33.     tst.l    d0
  34.     beq    ende_all
  35.     move.l    d0,_TrackerBase
  36.     TRK_OPENSTDLIB DOS,36
  37.     tst.l    d0
  38.     beq    ende_trk
  39.     move.l    d0,_DosBase
  40.  
  41.     tst.l    WBenchMsg
  42.     bne    fromWB
  43. ;von CLI aus -> Ausgaben ins CLI-Fenster
  44.     CALLDOS Output
  45.     move.l    d0,Output
  46.     bra    main
  47. ;von WB aus gestartet -> eigenes Window nötig
  48. fromWB: move.l    #WdName,d1
  49.     move.l    #MODE_OLDFILE,d2
  50.     CALLDOS Open
  51.     move.l    d0,Output
  52. ;---------------------------------------------------------------------------
  53. ;Haupt-Testteil
  54.  
  55. OPEN:    MACRO    ;Name, Text, Version, sichern in
  56.     lea    \2,a0
  57.     lea    \1,a1
  58.     move.l    #\3,d0
  59.     bsr    Open
  60.     move.l    d0,\4
  61.     ENDM
  62. OPENSTD: MACRO    ;Kennung ohne STDLIB_, Text, Version, sichern in
  63.     lea    \2,a0
  64.     move.l    #STDLIB_\1,d1
  65.     move.l    #\3,d0
  66.     bsr    OpenStd
  67.     move.l    d0,\4
  68.     ENDM
  69. CLOSE:    MACRO    ;wo gesichert
  70.     move.l    \1,a1
  71.     bsr    Close
  72.     ENDM
  73.  
  74. main:    OPEN    UtilityName,UtilityText,0,d0
  75.     OPENSTD ASL,AslText,36,d6
  76.     OPENSTD DISKFONT,DFText,34,d5
  77.     CLOSE    d6
  78.     OPEN    FantasyName,FantasyText,33,d0
  79.     OPENSTD DISKFONT,DFText,40,d0
  80.     CLOSE    d5
  81.  
  82. ;---------------------------------------------------------------------------
  83.  
  84. ;ggf. Window schließen
  85.     tst.l    WBenchMsg
  86.     beq    ende_trk
  87.     move.l    Output,d1
  88.     move.l    #GoodBye,d2
  89.     move.l    #GoodByeLen,d3    ;jetzt sind die Speicher-Pointer uninteressant
  90.     CALLDOS Write
  91.     move.l    #150,d1
  92.     CALL    Delay
  93.     move.l    Output,d1
  94.     CALL    Close
  95. ;Library schließen
  96. ende_trk:
  97.     CLOSELIB _TrackerBase
  98. ende_all:
  99.     tst.l    WBenchMsg    ;war da was ?
  100.     beq    toCLI        ;na dann halt nicht
  101. ;Message zur WB zurück
  102.     move.l    WBenchMsg,a1
  103.     CALLEXEC ReplyMsg
  104. toCLI:    moveq    #0,d0
  105.     rts
  106. ;---------------------------------------------------------------------------
  107. ;Unterroutine: TRK_OpenStdLibrary testen
  108. ;Parameter: d0 = gewünschte Version
  109. ;        a0 = Text-Label mit dem Library-Base-Namen
  110. ;        d1 = Kenn-Nummer der Library
  111. ;Ergebnis: die LibraryBase / 0 bei Fehler
  112.  
  113. OpenStd: movem.l d0/a0,-(sp)
  114.     move.l    d1,-(sp)
  115.     move.l    sp,d3
  116.     move.l    Output,d1
  117.     move.l    #OpenStdText,d2
  118.     CALLDOS VFPrintf
  119.     move.l    (sp)+,d1
  120.     move.l    (sp)+,d0
  121.     CALLTRK TRK_OpenStdLibrary
  122.     bra    PostOpen
  123. ;---------------------------------------------------------------------------
  124. ;Unterroutine: TRK_OpenLibrary testen
  125. ;Parameter: d0 = gewünschte Version
  126. ;        a0 = Text-Label mit dem Library-Base-Namen
  127. ;        a1 = Name der Library
  128. ;Ergebnis: die LibraryBase / 0 bei Fehler
  129.  
  130. Open:    movem.l d0/a0,-(sp)
  131.     move.l    a1,-(sp)
  132.     move.l    sp,d3
  133.     move.l    Output,d1
  134.     move.l    #OpenText,d2
  135.     CALLDOS VFPrintf
  136.     move.l    (sp)+,a1
  137.     move.l    (sp)+,d0
  138.     CALLTRK TRK_OpenLibrary
  139. PostOpen:
  140.     move.l    Output,d1
  141.     move.l    (sp),d2
  142.     move.l    d0,(sp)
  143.     move.l    sp,d3
  144.     CALLDOS VFPrintf
  145.     move.l    (sp)+,d0
  146.     rts
  147. ;---------------------------------------------------------------------------
  148. ;Unterroutine: TRK_CloseLibrary testen
  149. ;Parameter: a1 = LibraryBase
  150. ;Ergebnis: -
  151.  
  152. Close:    move.l    a1,d0
  153.     bne    1$
  154.     rts
  155. 1$:    movem.l a1,-(sp)        ;Register sichern
  156.     CALLTRK TRK_CloseLibrary
  157.     move.l    Output,d1
  158.     move.l    #CloseText,d2
  159.     move.l    sp,d3
  160.     CALLDOS VFPrintf
  161.     add.w    #4,sp
  162.     rts
  163. ;---------------------------------------------------------------------------
  164.  
  165. WBenchMsg:    dc.l    0
  166.  
  167. TrName: TRACKERNAME
  168.  
  169. OpenStdText:    dc.b "OpenStdLibrary(%ld,%ld) : ",0
  170. OpenText:    dc.b "OpenLibrary(",34,"%s",34,",%ld) : ",0
  171. CloseText:    dc.b "CloseLibrary($%06lx) done",10,0
  172. WdName:     dc.b "CON:////OpenLibrary-Test für tracker.library",0
  173. GoodBye:    dc.b 10,"Bye - closing soon !"
  174. GoodByeLen:    equ  *-GoodBye
  175. UtilityName:    dc.b "utility.library",0
  176. UtilityText:    dc.b "_UtilityBase=$%06lx",10,0
  177. AslText:    dc.b "_AslBase=$%06lx",10,0
  178. DFText:     dc.b "_DiskfontBase=$%06lx",10,0
  179. FantasyName:    dc.b "fantasy.library",0
  180. FantasyText:    dc.b "_FantasyBase=$%06lx",10,0
  181.  
  182.     END
  183.